//
//  HomeViewController.swift
//  上海微博
//
//  Created by apple on 16/5/11.
//  Copyright © 2016年 kuaikuaipao. All rights reserved.
//

import UIKit
 private  let  CZStatusCellID = "CZStatusCellID "

class HomeViewController: RootViewController  {

    override func viewDidLoad() {
        super.viewDidLoad()
//       print("打印--")
        

        
        
        //注册重用的cell
        tableview.registerClass(UITableViewCell.self, forCellReuseIdentifier: CZStatusCellID)
        loadData()
//        print("123")
        
        
    }
  //接收到内存警告
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
         //意思是不用我们去刷出View
        //只需释放能够被再次创建的资源 在iOS 6之后默认不再清除View  如果视图当前没有显示，会被从内存中销毁 下次需要的时候再调用loadView 创建View
        //注意Swift 中lazy 的属性 不能设置成nil
        print("Home的Window\(self.view.window)")
        
        if self.view.window == nil {
            //清理数组
        self.dataList.removeAll()
            //刷新数据
             self.loadData()
            
        }
        
        
    }
    

 override func loadData() {
    //模拟异步请求 加载数据
    
        let defaultIndex = 100
      //1.   判断是否是上拉刷新 如果菊花启动我们就判断是上拉
        let isPullup = pullupView.isAnimating()
       //如果是下拉刷新 显示刷新控件
    if  !isPullup {
        //只会显示菊花不会 触发方法
        refreshControl.beginRefreshing()
    }
    
    
    dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
        //下拉刷新的索引值的数据
        let pulldownIndex = self.dataList.first ?? defaultIndex
        //ToDo----上拉刷新的的 最后一条的数据记录
        
        let pullupIndex = self.dataList.last ?? 0
        var arrayM = [Int]()
        
        if isPullup {
            for i in 0..<10 {
                //小
                arrayM.append(pullupIndex - i - 1)
              print("pullupIndex")
            }
            
        } else {
            // 大
            //模拟网络第一次加载的数据
            for i in (0..<10).reverse() {
                
                arrayM.append(i + pulldownIndex + 1 )
            }
            print("pulldownIndex--")
            
        }
        if isPullup {
             self.dataList += arrayM
            //加入现有数据的后面
           
        } else {
            
            //下拉刷新 将现有的dataList 追加到前面
            self.dataList = arrayM + self.dataList
        }
        
        //ToDo----下拉刷新
          //创建一个可变的数组
        
        
    //回到主线线程 更新UI  因为是一个闭包所以加一个self ？？
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        
        //关闭刷新
       self.refreshControl.endRefreshing()
        
        
        //停止上拉刷新视图动画
         self.pullupView.stopAnimating()
        //刷新数据
         self.tableview.reloadData()
    })
        
        
    }

}
    
    //私有属性 
    
    private lazy var dataList = [Int]()
 }

//父类已经遵守协议 子类不需要再遵守 否则会报错
extension HomeViewController {
    //重写数据源方法
   override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataList.count
        
        
    }
    
  override  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell  = tableview.dequeueReusableCellWithIdentifier(CZStatusCellID, forIndexPath: indexPath)
        
        cell.textLabel?.text = dataList[indexPath.row].description
        
        
        return cell
    }

    //oc 中调用一个对象的描述
    
}

